package com.basics.common.utils.weixin.model.pay;

import lombok.Data;

import java.io.Serializable;

/**
 * 调用微信统一下单接口使用的POJO类
 *
 * @since 2016年8月2日
 * @author limu
 *
 */
@Data
public class WeixinPayUnifiedOrder implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 必填字段：公众号的APPID
	 */
	private String appid;

	/**
	 * 必填字段：微信支付分配的商户号
	 */
	private String mch_id;

	/**
	 * 必填字段：随机字符串，不长于32位。使用随机算法(可以使用UUID截取中间30位然后转换成大写)
	 */
	private String nonce_str;

	/**
	 * 必填字段：签名（使用签名算法工具类）
	 */
	private String sign;


	private String sign_type;

	/**
	 * 必填字段：商品的简单描述，该字段需要严格按照规范传递
	 */
	private String body;


	/**
	 * 必填字段：商户订单号；商户系统内部的订单号，32个字符内，可包含字母。
	 */
	private String out_trade_no;

	/**
	 * 必填字段：总金额；订单总金额，单位为【分】
	 */
	private String total_fee;

	/**
	 * 必填字段：终端IP；APP和网页支付提交用户端ip，Native支付调用微信支付API的机器IP。
	 */
	private String spbill_create_ip;

	/**
	 * 必填字段：通知地址；接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。
	 */
	private String notify_url;

	/**
	 * 必填字段：交易类型；取值如下：JSAPI，NATIVE，APP，详细说明见参数规定
	 */
	private String trade_type;

	// 非必填字段：用户标识；trade_type=JSAPI，此参数必传，用户在商户appid下的唯一标识。
	private String openid;

	// 非必填字段：终端设备号(门店号或收银设备ID)，注意：PC网页或公众号内支付请传"WEB"
	private String device_info;

	// 非必填字段：商品详情列表，使用JSON格式，传输前需要使用CDATA标签将JSON串保护起来
	private String detail;

	// 非必填字段：附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
	private String attach;

	// 非必填字段：货币类型；符合ISO 4217标准的三位字母代码，默认人民币：CNY，接口中参数列表只有一个CNY
	private String fee_type;

	// 非必填字段：交易起始时间；订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
	private String time_start;

	// 非必填字段：交易结束时间；订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则
	// 【注意：最短失效时间间隔必须大于5分钟】
	private String time_expire;

	// 非必填字段：商品标记；商品标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠
	private String goods_tag;

	// 非必填字段：商品ID；trade_type=NATIVE，此参数必传。此id为二维码中包含的商品ID，商户自行定义。
	private String product_id;

	// 非必填字段：指定支付方式；no_credit--指定不能使用信用卡支付
	private String limit_pay;

	/**
	 * 扫码支付付款码，设备读取用户微信中的条码或者二维码信息
	 * （用户付款码规则：18位纯数字，前缀以10、11、12、13、14、15开头）
	 */
	private String auth_code;

	/**
	 * Y-是，需要分账
	 * N-否，不分账
	 * 字母要求大写，不传默认不分账
	 */
	private String profit_sharing;
}
